Перейти к основному содержимому

7.3. Шифрование данных

Безопасность и контроль доступа Apache Ozone: Шифрование данных

Apache Ozone поддерживает шифрование данных, что позволяет защитить информацию как при передаче, так и в состоянии покоя. Шифрование данных обеспечивает высокий уровень безопасности, предотвращая несанкционированный доступ к данным, даже если кто-то получает доступ к физическим носителям. В Ozone реализовано шифрование на уровне бакетов (buckets), что позволяет администраторам применять шифрование выборочно, в зависимости от требований к безопасности.


1. Основные принципы шифрования в Ozone

  • Шифрование на уровне бакетов: Шифрование можно включить на уровне бакетов, обеспечивая защиту данных в каждом конкретном бакете.
  • Поддержка KMS (Key Management Service): Apache Ozone интегрируется с системами управления ключами, такими как Hadoop KMS или другие решения для управления ключами шифрования.
  • Прозрачное шифрование и дешифрование: Данные автоматически шифруются при записи в бакет и дешифруются при чтении, что упрощает использование и снижает нагрузку на пользователей.
  • Управление доступом к ключам шифрования: Операции шифрования зависят от прав доступа к ключам в KMS, что позволяет централизованно управлять безопасностью данных.

2. Настройка шифрования в Apache Ozone

Шаг 1: Настройка Hadoop KMS

Для шифрования данных в Ozone требуется настроить Hadoop KMS или другой совместимый KMS для управления ключами шифрования.

  1. Установите и настройте Hadoop KMS.
  2. Укажите конфигурацию KMS в файле kms-site.xml, задав параметры для подключения к KMS, а также для хранения и управления ключами.

Пример конфигурации kms-site.xml:

<configuration>
<property>
<name>hadoop.kms.authentication.type</name>
<value>simple</value> <!-- Используйте kerberos для production-сред -->
</property>
<property>
<name>hadoop.kms.port</name>
<value>16000</value>
</property>
<property>
<name>hadoop.kms.key.provider.uri</name>
<value>kms://http@kms.example.com:16000/kms</value>
</property>
</configuration>

Шаг 2: Настройка Ozone для работы с KMS

Добавьте конфигурацию KMS в ozone-site.xml.

<configuration>
<!-- Включение шифрования в Ozone -->
<property>
<name>ozone.client.enable.encryption</name>
<value>true</value>
</property>

<!-- Указание KMS URI -->
<property>
<name>ozone.kms.client.key.provider.uri</name>
<value>kms://http@kms.example.com:16000/kms</value>
</property>
</configuration>

3. Создание ключей шифрования в KMS

Для шифрования данных в Ozone необходимо создать ключи шифрования в KMS. Эти ключи будут использоваться для шифрования и дешифрования данных в бакетах.

  1. Откройте командную строку Hadoop и выполните команду для создания ключа:

    hadoop key create <encryption-key-name>

    Пример:

    hadoop key create ozone-encryption-key
  2. Проверьте наличие ключа в KMS:

    hadoop key list

4. Создание зашифрованного бакета в Ozone

После настройки KMS и создания ключа шифрования вы можете создать зашифрованный бакет в Ozone.

bin/ozone sh bucket create /myvolume/encrypted-bucket --encryption-key=ozone-encryption-key
  • /myvolume/encrypted-bucket: Указывает путь к новому бакету.
  • --encryption-key=ozone-encryption-key: Задаёт ключ шифрования, созданный в KMS.

При записи данных в этот бакет Ozone автоматически применяет шифрование.


5. Управление зашифрованными бакетами

Зашифрованные бакеты в Ozone имеют те же возможности управления, что и обычные бакеты. Вы можете выполнять следующие операции:

  • Чтение и запись данных: Данные автоматически дешифруются при чтении и шифруются при записи.

  • Просмотр информации о бакете: Используйте команду для просмотра информации о зашифрованном бакете:

    bin/ozone sh bucket info /myvolume/encrypted-bucket
  • Удаление зашифрованного бакета: Удалите бакет как обычно. Все данные, зашифрованные этим бакетом, будут удалены.


6. Настройка доступа к ключам шифрования

Доступ к данным в зашифрованных бакетах зависит от прав доступа к ключам в KMS. Используйте KMS для управления доступом к ключам и ограничения их использования.

Пример создания политики доступа в KMS:

hadoop kms grant acl --keyName ozone-encryption-key --permission READ --user user1
hadoop kms grant acl --keyName ozone-encryption-key --permission ALL --user admin
  • Пользователю user1 предоставляется право только на чтение.
  • Администратор (admin) получает полный доступ к ключу.

Эти ограничения позволяют гибко управлять правами доступа к зашифрованным данным.


7. Отладка и решение проблем с шифрованием

  1. Проверка подключения к KMS: Убедитесь, что Ozone может подключиться к KMS. Проверьте доступность URL KMS, указанный в ozone-site.xml.

  2. Проверка наличия ключа в KMS: Убедитесь, что ключ шифрования существует в KMS и имеет правильные разрешения. Выполните команду:

    hadoop key list
  3. Просмотр логов KMS и Ozone: Если возникают ошибки шифрования или доступа к данным, проверьте логи KMS и Ozone для выявления причин.

    Пример просмотра логов Ozone:

    tail -f /var/log/ozone/om.log
  4. Проверка прав доступа к ключам: Убедитесь, что пользователи, пытающиеся получить доступ к зашифрованному бакету, имеют соответствующие права на ключ в KMS.


8. Рекомендации по использованию шифрования в Ozone

  1. Используйте шифрование для конфиденциальных данных: Шифрование на уровне бакетов позволяет защитить данные в критически важных хранилищах. Шифруйте только те бакеты, которые требуют повышенной безопасности, чтобы избежать излишней нагрузки на систему.

  2. Регулярно управляйте ключами: Устанавливайте политику регулярного обновления ключей шифрования в KMS. Это поможет защитить данные, если ключи будут скомпрометированы.

  3. Мониторинг доступа к ключам: Следите за тем, кто и когда запрашивает доступ к ключам шифрования, используя возможности аудита в KMS. Это поможет выявить несанкционированный доступ.

  4. Разделение ключей для разных групп данных: Используйте разные ключи шифрования для разных типов данных или отделов, что позволит обеспечить более гибкий контроль доступа.


Итог

Шифрование данных в Apache Ozone предоставляет надёжный способ защиты данных на уровне бакетов, обеспечивая безопасность данных как в состоянии покоя, так и при передаче. С помощью интеграции с KMS Ozone позволяет гибко управлять ключами шифрования и правами доступа к данным. Правильная настройка шифрования и регулярное управление ключами помогают создать безопасное хранилище данных, соответствующее требованиям безопасности и конфиденциальности.